home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat5 / mips_ext.z / mips_ext
Encoding:
Text File  |  2002-10-03  |  8.8 KB  |  163 lines

  1. MIPS_EXT(5)                                           Last changed: 1-11-99
  2.  
  3.  
  4. NNAAMMEE
  5.      mmiippss__eexxtt - MIPS architecture extensions and the --mmiippss_n compiler option
  6.  
  7. IIMMPPLLEEMMEENNTTAATTIIOONN
  8.      IRIX systems
  9.  
  10. DDEESSCCRRIIPPTTIIOONN
  11.      This man page describes the --mmiippss_n option to the cccc, ff7777, and ff9900
  12.      command line.  _n can be 22, 33, or 44. Each type of extension is
  13.      described here.
  14.  
  15.    TThhee MMIIPPSS 22 EExxtteennssiioonn
  16.      The MIPS R4000 processor contains many instruction set extensions to
  17.      the MIPS1 instruction set that was defined by the MIPS R2000/R3000. A
  18.      subset of these instruction set extensions defines the MIPS2
  19.      instruction set and is accessible with the --mmiippss22 option.
  20.  
  21.      This extension instructs the code generation phase of the compiler to
  22.      generate the MIPS2 instructions wherever beneficial. The option also
  23.      causes the instruction scheduler phase to use the R4000 processor
  24.      model while scheduling instructions. When linking, the --mmiippss22 option
  25.      instructs the linker, lldd(1), to use MIPS2-specific versions of
  26.      libraries from the //uussrr//lliibb//mmiippss22 directory.
  27.  
  28.      The following features are added by the MIPS2 instruction set
  29.      extensions:
  30.  
  31.      * Double precision floating-point load and store instructions. This
  32.        can provide significant improvement to code using double precision
  33.        floating-point manipulation. A single instruction can load/store a
  34.        double precision floating-point value. In contrast, the R2000/R3000
  35.        required using two instructions to reference the upper half and the
  36.        lower half of the double precision value.
  37.  
  38.      * Intrinsic instructions to convert floating-point numbers.  The
  39.        instructions provide truncate, round, ceiling and floor operations.
  40.        On the R2000/R3000, these instructions were implemented as assembler
  41.        macros which expanded into approximately 11 instructions. Code which
  42.        does a significant amount of floating-point to integer conversions
  43.        benefits from the --mmiippss22 option.
  44.  
  45.      * Floating point SQRT instruction. This is faster than the SQRT
  46.        routine in the math libraries for the R2000/R3000.
  47.  
  48.      * Branch-likely instructions. Every branch instruction in the MIPS1
  49.        architecture has a corresponding branch-likely form. In this form of
  50.        the branch, the instruction in the delay slot of the branch is
  51.        nullified if the conditional branch is not taken.
  52.  
  53.      * New compare and trap instructions, which cause an exception to be
  54.        raised based on the result of comparing two registers or a register
  55.        and immediate value. In the R2000/R3000, these instructions were
  56.        implemented as assembler macros which expanded into a sequence using
  57.        a conditional branch and a break instruction.
  58.  
  59.      A special set of libraries compiled with the --mmiippss22 option and making
  60.      use of MIPS2 features is provided in the //uussrr//lliibb//mmiippss22 directory.
  61.      MIPS2 versions of lliibbffaassttmm..aa, lliibbmm..aa and lliibbmm4433..aa libraries are
  62.      provided as part of the basic development environment. MIPS2 versions
  63.      of lliibbFF7777..aa, lliibbII7777..aa, lliibbUU7777..aa and lliibbiissaamm are provided as part of
  64.      the Fortran compiler.  The shared library versions of these Fortran
  65.      libraries do not currently have a MIPS2 version.
  66.  
  67.      Code compiled and/or linked using the --mmiippss22 option does not run on
  68.      R2000/R3000 based machines.  Code compiled without the --mmiippss22 option
  69.      runs on all machines - R2000/R3000/R4000 - within the constraints of
  70.      operating system compatibility. If broad machine base compatibility is
  71.      an issue, use the --mmiippss22 option only when significant benefit is
  72.      achieved on an R4000 based system as compared to running the same
  73.      program compiled without the --mmiippss22 option on the same R4000 based
  74.      system.
  75.  
  76.      The double precision floating-point load and store instructions
  77.      require the data to be aligned on a double word boundary. A non-
  78.      aligned access causes the program to abort with a bbuuss eerrrroorr message.
  79.      This requirement may cause some programs to fail when recompiled with
  80.      the --mmiippss22 option. This can happen in some Fortran programs that have
  81.      common blocks with an odd number of integer values followed by double
  82.      precision data.
  83.  
  84.    TThhee MMIIPPSS33 EExxtteennssiioonn
  85.      The MIPS3 extensions were introduced in the R4000 processors and
  86.      primarily support 64-bit addresses and arithmetic and a larger
  87.      floating-point register set.  The 64-bit addressing features are only
  88.      supported on machines running a 64-bit kernel.  The 64-bit arithmetic
  89.      features are supported on all machines running IRIX 6.2 and later
  90.      releases (R4000 and later CPUs).
  91.  
  92.      The MIPS3 instruction set extensions provide the following features:
  93.  
  94.      * 64-bit integer registers, with a complete set of instructions to
  95.        perform 64-bit integer arithmetic operations.
  96.  
  97.      * 64-bit addresses and pointers.  The R4000 family and later MIPS
  98.        processors support a 64-bit flat address space.
  99.  
  100.      * Thirty-two 64-bit floating-point registers.  The R4000 family
  101.        supports two floating-point register (FPR) modes, determining how
  102.        many 64-bit FPRs are available:  16-FPR mode and 32-FPR mode.
  103.  
  104.        The 16-FPR mode is compatible with the R2000/R3000 and is available
  105.        using the default (--mmiippss11) or --mmiippss22 compiler options.  The 32-FPR
  106.        mode is not compatible with the MIPS1 or MIPS2 model.  Therefore, it
  107.        is only supported by the --mmiippss33 and --mmiippss44 options.
  108.  
  109.      The SGI Pascal compiler, ppcc, does not support the --mmiippss33 option or the
  110.      MIPS3 instruction set.
  111.  
  112.    TThhee MMIIPPSS44 EExxtteennssiioonn
  113.      The MIPS4 instruction set extensions consist of a backward compatible
  114.      superset of the MIPS3 instruction set.  The MIPS4 extensions are
  115.      intended primarily to provide better performance in floating-point
  116.      numeric processing.  These features are currently supported under IRIX
  117.      6.2 and later releases running on machines with the R8000, R10000, or
  118.      R5000 microprocessors.
  119.  
  120.      The MIPS4 instruction set extensions provide the following features:
  121.  
  122.      * A new set of multiply-add instructions takes advantage of the fact
  123.        that the majority of floating-point computations use the chained
  124.        multiply-add paradigm.  These instructions have lower inherent
  125.        latency (temporary result need not be written back to a register)
  126.        and higher performance (fewer instructions to fetch and decode).
  127.        The multiple-add instructions on an R8000 (but not on R5000 or
  128.        R10000) does not perform intermediate rounding, for even lower
  129.        latency.
  130.  
  131.      * A register+register addressing mode for floating-point loads and
  132.        stores eliminates the extra integer add required in many array
  133.        accesses.  (Register+register addressing for integer memory
  134.        operations is not supported.)
  135.  
  136.      * A set of four conditional move operators allows some simple IIFF
  137.        statements to be represented without branches.  TTHHEENN and EELLSSEE
  138.        clauses are computed unconditionally and the results placed in a
  139.        temporary register.  Conditional move operators then select the
  140.        correct temporary result.
  141.  
  142.      * Memory prefetch instructions to better manage data cache behavior in
  143.        memory intensive algorithms. Prefetch instructions are not supported
  144.        on the R8000.  See mmiippsscchheecckk(1) for details.
  145.  
  146. NNOOTTEESS
  147.      Programs compiled with the --mmiippss33 or --mmiippss44 option conform to the MIPS
  148.      64-bit application binary interface (ABI64) or n32 ABI (ABIn32),
  149.      rather than the original MIPS ABI (ABIo32).  Each of the 3 ABIs is
  150.      distinct and object files compiled to one ABI cannot be linked to
  151.      object files (including archives and DSOs) compiled to another ABI.
  152.  
  153. SSEEEE AALLSSOO
  154.      _A_s_s_e_m_b_l_y _L_a_n_g_u_a_g_e _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e.
  155.      _M_I_P_S_p_r_o _6_4-_B_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n _G_u_i_d_e
  156.      _M_I_P_S_p_r_o _N_3_2 _A_B_I _H_a_n_d_b_o_o_k
  157.      _M_I_P_S _R_I_S_C _A_r_c_h_i_t_e_c_t_u_r_e, Gerry Kane and Joe Heinrich, Prentice Hall.
  158.      _M_I_P_S _R_4_0_0_0 _U_s_e_r'_s _M_a_n_u_a_l, Joseph Heinrich, Prentice Hall.
  159.  
  160.      aass(1), cccc(1), CCCC(1), ff7777(1), ppcc(1)
  161.  
  162.      This man page is available only online.
  163.